package com.xframe.domain.views.ui;

import lombok.Getter;

/**
 * @Description: 前端UI类型枚举
 * @ClassName: UIType
 * @Author: xufeng
 * @CreateTime: 2023/12/05 9:15
 **/
@Getter
public enum UIType {

    /**
     * 隐藏组件
     */
    NONE("xCompNone"),
    /**
     * 文本框
     */
    TEXT("xInput"),
    /**
     * 密码框
     */
    PASSWORD("xInputPassword"),
    /**
     * 多行文本
     */
    TEXTAREA("xTextarea"),
    /**
     * 选择开关
     */
    SWITCH("xSwitch"),
    /**
     * 下拉选择
     */
    SELECT("xSelect"),
    /**
     * 时间选择器
     */
    TIME("xTimeSelect"),
    /**
     * 日期范围
     */
    DATERANGE("xDateRange"),
    /**
     * 日期时间选择框
     */
    DATETIME("xDateTime"),

    /**
     * 单个日期选择框
     */
    DATE("xDateSelect"),
    /**
     * 弹出树选择
     */
    TREESELECT("xTreeSelect"),
    /**
     * radio组选择
     */
    RADIO_GROUP("xRadioGroup"),
    /**
     * 复选框
     */
    CHECKBOX("xCheckbox"),
    /**
     * 数字输入框
     */
    INPUTNUM("xInputNum"),
    /**
     * 弹出列表选择
     */
    TABLESELECT("xSelectTable"),
    /**
     * 富文本编辑器
     */
    RICHTEXT("xTextRich"),

    /**
     * JSON编辑器
     */
    JSONTEXT("xTextJson"),

    /**
     * 图标选择器
     */
    ICONSELECT("xIconSelect"),

    /**
     * 文件上传组件
     */
    FILEUPLOAD("xUpload"),

    /**
     * 图片预览组件
     */
    IMAGEUPLOAD("xUploadImage"),

    /**
     * 普通标签
     */
    LABEL("xLabel");

    /**
     * 枚举的名称
     */
    private final String componentName;

    UIType(String componentName) {
        this.componentName = componentName;
    }

    public static UIType fromString(String value) {
        try {
            return valueOf(value.toUpperCase());
        } catch (IllegalArgumentException e) {
            return NONE;
        }
    }
}
